import request from "@/utils/request";

// const USER_BASE_URL = "/api/v1/users";
const USER_BASE_URL = "/core/tProdHead";

const prodOrderManageApi = {
  /**
   * 查询生产单
   *
   * @param queryParams 查询参数
   */
  getPage(queryParams: prodOrderPageQuery) {
    let query = encodeURIComponent(JSON.stringify({ ...queryParams }));
    return request<any, PageResult<prodManagePageVO[]>>({
      url: `${USER_BASE_URL}/getTProdHeadList?object=${query}`,
      method: "get",
    });
  },

  /*
  /**
   * 删除生产单
   *
   * @param id id
   */

  deleteById(id: number) {
    return request<any, any>({
      url: `${USER_BASE_URL}/delTProdHead`,
      method: "post",
      data: {
        id,
      },
    });
  },

  /*
   * 修改生产单
   * @param data 生产单信息
   */

  update(data: any) {
    return request<any, any>({
      url: `${USER_BASE_URL}/saveOrUpdateTProdHead`,
      method: "post",
      data,
    });
  },

  /**
   * 开始执行，开始备料
   * @param id 生产单ID
   * @returns
   */
  startExecute(
    id: number,
    pauseParams?: { status: number; pauseTime?: string; pauseRemark?: string }
  ) {
    return request<any, any>({
      url: `${USER_BASE_URL}/startProduction`,
      method: "post",
      data: {
        id: id,
        ...pauseParams,
      },
    });
  },

  /**
   * 产线前看板扫码
   * @param params 参数 { code: string; basket: string }
   */
  scanProdBasket(params: prodOrderScanParams) {
    return request<any, any>({
      url: `${USER_BASE_URL}/scanProdBasket`,
      method: "post",
      data: params,
    });
  },
};

export default prodOrderManageApi;

/**
 * 产线前看板扫码参数类型
 * @param code 生产单编号
 * @param basket 篮子编号
 */
export interface prodOrderScanParams {
  code: string; // 生产单编号
  basket: string; // 篮子编号
}

/*用料*/
export interface prodOrderPageQuery extends PageQuery {
  /* 生产单ID*/
  id?: number;
  /* 生产单编号*/
  code?: string;
  /*产品编号*/
  productCode?: string;
  /* 产品名称*/
  productName?: string;
  /* 计划生产日期*/
  planDate?: string;
  /* 生产交期*/
  finishTime?: string;
  /* 生产状态*/
  status?: number;

  parentCode?: string;
  statusList?: number[]; // 生产状态列表
}

/** 生产单主表信息 */
export interface prodManagePageVO {
  id: number; // 主键，自增
  code: string; // 生产单编号，不允许为空
  parentCode?: string; // mrp计划编码，允许为空
  prefix?: string; // 字首，允许为空
  genNo?: number; // 流水号，允许为空
  prodType?: string; // 生产单类别，允许为空
  prodLevel?: string; // 生产单级别，允许为空
  productCode?: string; // 产品编号，允许为空
  productName?: string; // 产品名称，允许为空
  qty?: number; // 生产数量，允许为空（使用number类型）
  unit?: string; // 单位，允许为空
  deliveryDate?: Date; // 生产完成时间，允许为空
  planDate?: Date; // 开始生产时间，允许为空
  prodLine?: string; // 生产线别，允许为空
  remark?: string; // 备注，允许为空
  status?: number; // 状态，允许为空
  createTime?: Date; // 录入日期，允许为空
  createUser?: number; // 录入人员id，允许为空
  createName?: string; // 录入人员，允许为空
  modifyTime?: Date; // 修改日期，允许为空
  modifyUser?: number; // 修改人员id，允许为空
  modifyName?: string; // 修改人员，允许为空
  approvalTime?: Date; // 审核日期，允许为空
  approvalUser?: number; // 审核人员id，允许为空
  approvalName?: string; // 审核人员，允许为空
  entryQty?: number; //已生产数量
}
